#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <assert.h>
#include <math.h>
#include <malloc.h>

#include "annonce.h"

bool anVerif_Belote(Joueur joueur_actu)
{
    int i;

    for(i=0;i<7;i++)
    {
        if((joueur_actu.main[i].valeur == 'r')&&(joueur_actu.main[i].atout == true))
        {
            if((joueur_actu.main[i+1].valeur == 'd')&&(joueur_actu.main[i+1].atout == true))
                {
                    return true;
                }
        }
    }

    return false;

}

int anEtude_Tierce(Joueur joueur_actu)
{
    int i=0;

    while(joueur_actu.main[i+2].numero < 9)
    {
       if((joueur_actu.main[i].numero+1 == joueur_actu.main[i+1].numero)&&
          (joueur_actu.main[i+1].numero+1 == joueur_actu.main[i+2].numero))
        {
            return joueur_actu.main[i+2].numero;
        }
        i++;
    }

    while((joueur_actu.main[i].numero > 8)&&(joueur_actu.main[i+2].numero < 17))
    {
       if((joueur_actu.main[i].numero+1 == joueur_actu.main[i+1].numero)&&
          (joueur_actu.main[i+1].numero+1 == joueur_actu.main[i+2].numero))
        {
            return joueur_actu.main[i+2].numero;
        }
        i++;
    }
    while((joueur_actu.main[i].numero > 16)&&(joueur_actu.main[i+2].numero < 25))
    {
       if((joueur_actu.main[i].numero+1 == joueur_actu.main[i+1].numero)&&
          (joueur_actu.main[i+1].numero+1 == joueur_actu.main[i+2].numero))
        {
            return joueur_actu.main[i+2].numero;
        }
        i++;
    }
        while((joueur_actu.main[i].numero > 24)&&(joueur_actu.main[i+2].numero < 33))
    {
       if((joueur_actu.main[i].numero+1 == joueur_actu.main[i+1].numero)&&
          (joueur_actu.main[i+1].numero+1 == joueur_actu.main[i+2].numero))
        {
            return joueur_actu.main[i+2].numero;
        }
        i++;
    }
    return 0;
}

int anEtude_Double_Tierce(Joueur joueur_actu)
{
        int i=0;
        int tierce=0;

    while(joueur_actu.main[i+2].numero < 9)
    {
       if((joueur_actu.main[i].numero+1 == joueur_actu.main[i+1].numero)&&
          (joueur_actu.main[i+1].numero+1 == joueur_actu.main[i+2].numero))
        {
            if(tierce == 0)
            {
                tierce = joueur_actu.main[i+2].numero;
            }
            else
            {
                if(tierce % 8 > joueur_actu.main[i+2].numero % 8)
                {
                    return tierce;
                }
                else
                {
                    return joueur_actu.main[i+2].numero;
                }
            }
        }
        i++;
    }

    while((joueur_actu.main[i].numero > 8)&&(joueur_actu.main[i+2].numero < 17))
    {
       if((joueur_actu.main[i].numero+1 == joueur_actu.main[i+1].numero)&&
          (joueur_actu.main[i+1].numero+1 == joueur_actu.main[i+2].numero))
        {
            if(tierce == 0)
            {
                tierce = joueur_actu.main[i+2].numero;
            }
            else
            {
                if(tierce % 8 > joueur_actu.main[i+2].numero % 8)
                {
                    return tierce;
                }
                else
                {
                    return joueur_actu.main[i+2].numero;
                }
            }
        }
        i++;
    }
    while((joueur_actu.main[i].numero > 16)&&(joueur_actu.main[i+2].numero < 25))
    {
       if((joueur_actu.main[i].numero+1 == joueur_actu.main[i+1].numero)&&
          (joueur_actu.main[i+1].numero+1 == joueur_actu.main[i+2].numero))
        {
            if(tierce == 0)
            {
                tierce = joueur_actu.main[i+2].numero;
            }
            else
            {
                if(tierce % 8 > joueur_actu.main[i+2].numero % 8)
                {
                    return tierce;
                }
                else
                {
                    return joueur_actu.main[i+2].numero;
                }
            }
        }
        i++;
    }
        while((joueur_actu.main[i].numero > 24)&&(joueur_actu.main[i+2].numero < 33))
    {
       if((joueur_actu.main[i].numero+1 == joueur_actu.main[i+1].numero)&&
          (joueur_actu.main[i+1].numero+1 == joueur_actu.main[i+2].numero))
        {
            if(tierce == 0)
            {
                tierce = joueur_actu.main[i+2].numero;
            }
            else
            {
                if(tierce % 8 > joueur_actu.main[i+2].numero % 8)
                {
                    return tierce;
                }
                else
                {
                    return joueur_actu.main[i+2].numero;
                }
            }
        }
        i++;
    }
    return 0;
}

int anEtude_50(Joueur joueur_actu)
{
    int i=0;

    while(joueur_actu.main[i+3].numero < 9)
    {
       if((joueur_actu.main[i].numero+1 == joueur_actu.main[i+1].numero)&&
          (joueur_actu.main[i+1].numero+1 == joueur_actu.main[i+2].numero)&&
          (joueur_actu.main[i+2].numero+1 == joueur_actu.main[i+3].numero))
        {
            return joueur_actu.main[i+3].numero;
        }
        i++;
    }

    while((joueur_actu.main[i].numero > 8)&&(joueur_actu.main[i+3].numero < 17))
    {
       if((joueur_actu.main[i].numero+1 == joueur_actu.main[i+1].numero)&&
          (joueur_actu.main[i+1].numero+1 == joueur_actu.main[i+2].numero)&&
          (joueur_actu.main[i+2].numero+1 == joueur_actu.main[i+3].numero))
        {
            return joueur_actu.main[i+3].numero;
        }
        i++;
    }
    while((joueur_actu.main[i].numero > 16)&&(joueur_actu.main[i+3].numero < 25))
    {
       if((joueur_actu.main[i].numero+1 == joueur_actu.main[i+1].numero)&&
          (joueur_actu.main[i+1].numero+1 == joueur_actu.main[i+2].numero)&&
          (joueur_actu.main[i+2].numero+1 == joueur_actu.main[i+3].numero))
        {
            return joueur_actu.main[i+3].numero;
        }
        i++;
    }
        while((joueur_actu.main[i].numero > 24)&&(joueur_actu.main[i+3].numero < 33))
    {
       if((joueur_actu.main[i].numero+1 == joueur_actu.main[i+1].numero)&&
          (joueur_actu.main[i+1].numero+1 == joueur_actu.main[i+2].numero)&&
          (joueur_actu.main[i+2].numero+1 == joueur_actu.main[i+3].numero))
        {
            return joueur_actu.main[i+3].numero;
        }
        i++;
    }
    return 0;
}

int anEtude_50_Tierce(Joueur joueur_actu)
{
    int tierce;
    int cinquante;

    tierce = anEtude_Double_Tierce(joueur_actu);
    cinquante = anEtude_50(joueur_actu);

    if(tierce != 0)
    {
        if(cinquante != 0)
        {
            return cinquante;
        }
    }

    return 0;
}
int anEtude_Double_50(Joueur joueur_actu)
{
    int i=0;
    int cinquante = 0;

    while(joueur_actu.main[i+3].numero < 9)
    {
       if((joueur_actu.main[i].numero+1 == joueur_actu.main[i+1].numero)&&
          (joueur_actu.main[i+1].numero+1 == joueur_actu.main[i+2].numero)&&
          (joueur_actu.main[i+2].numero+1 == joueur_actu.main[i+3].numero))
        {
            if(cinquante == 0)
            {
                cinquante = joueur_actu.main[i+3].numero;
            }
            else
            {
                if(cinquante % 8 > joueur_actu.main[i+3].numero % 8)
                {
                    return cinquante;
                }
                else
                {
                    return joueur_actu.main[i+3].numero;
                }
            }
        }
        i++;
    }

    while((joueur_actu.main[i].numero > 8)&&(joueur_actu.main[i+3].numero < 17))
    {
       if((joueur_actu.main[i].numero+1 == joueur_actu.main[i+1].numero)&&
          (joueur_actu.main[i+1].numero+1 == joueur_actu.main[i+2].numero)&&
          (joueur_actu.main[i+2].numero+1 == joueur_actu.main[i+3].numero))
        {
            if(cinquante == 0)
            {
                cinquante = joueur_actu.main[i+3].numero;
            }
            else
            {
                if(cinquante % 8 > joueur_actu.main[i+3].numero % 8)
                {
                    return cinquante;
                }
                else
                {
                    return joueur_actu.main[i+3].numero;
                }
            }
        }
        i++;
    }
    while((joueur_actu.main[i].numero > 16)&&(joueur_actu.main[i+3].numero < 25))
    {
       if((joueur_actu.main[i].numero+1 == joueur_actu.main[i+1].numero)&&
          (joueur_actu.main[i+1].numero+1 == joueur_actu.main[i+2].numero)&&
          (joueur_actu.main[i+2].numero+1 == joueur_actu.main[i+3].numero))
        {
            if(cinquante == 0)
            {
                cinquante = joueur_actu.main[i+3].numero;
            }
            else
            {
                if(cinquante % 8 > joueur_actu.main[i+3].numero % 8)
                {
                    return cinquante;
                }
                else
                {
                    return joueur_actu.main[i+3].numero;
                }
            }
        }
        i++;
    }
        while((joueur_actu.main[i].numero > 24)&&(joueur_actu.main[i+3].numero < 33))
    {
       if((joueur_actu.main[i].numero+1 == joueur_actu.main[i+1].numero)&&
          (joueur_actu.main[i+1].numero+1 == joueur_actu.main[i+2].numero)&&
          (joueur_actu.main[i+2].numero+1 == joueur_actu.main[i+3].numero))
        {
            if(cinquante == 0)
            {
                cinquante = joueur_actu.main[i+3].numero;
            }
            else
            {
                if(cinquante % 8 > joueur_actu.main[i+3].numero % 8)
                {
                    return cinquante;
                }
                else
                {
                    return joueur_actu.main[i+3].numero;
                }
            }
        }
        i++;
    }
    return 0;
}

int anEtude_100(Joueur joueur_actu)
{
    int i=0;

    while(joueur_actu.main[i+4].numero < 9)
    {
       if((joueur_actu.main[i].numero+1 == joueur_actu.main[i+1].numero)&&
          (joueur_actu.main[i+1].numero+1 == joueur_actu.main[i+2].numero)&&
          (joueur_actu.main[i+2].numero+1 == joueur_actu.main[i+3].numero)&&
          (joueur_actu.main[i+3].numero+1 == joueur_actu.main[i+4].numero))
        {
            if((joueur_actu.main[i+5].numero<9)&&
               (joueur_actu.main[i+4].numero+1 == joueur_actu.main[i+5].numero))
            {
                if((joueur_actu.main[i+6].numero<9)&&
                   (joueur_actu.main[i+5].numero+1 == joueur_actu.main[i+6].numero))
                {
                    if((joueur_actu.main[i+7].numero<9)&&
                       (joueur_actu.main[i+6].numero+1 == joueur_actu.main[i+7].numero))
                    {
                        return joueur_actu.main[i+7].numero;
                    }
                    else
                    {
                        return joueur_actu.main[i+6].numero;
                    }
                }
                else
                {
                    return joueur_actu.main[i+5].numero;
                }
            }
            else
            {
                return joueur_actu.main[i+4].numero;
            }
        }
        i++;
    }

    while((joueur_actu.main[i].numero > 8)&&(joueur_actu.main[i+4].numero < 17))
    {
       if((joueur_actu.main[i].numero+1 == joueur_actu.main[i+1].numero)&&
          (joueur_actu.main[i+1].numero+1 == joueur_actu.main[i+2].numero)&&
          (joueur_actu.main[i+2].numero+1 == joueur_actu.main[i+3].numero)&&
          (joueur_actu.main[i+3].numero+1 == joueur_actu.main[i+4].numero))
        {
            if((joueur_actu.main[i+5].numero<17)&&
               (joueur_actu.main[i+4].numero+1 == joueur_actu.main[i+5].numero))
            {
                if((joueur_actu.main[i+6].numero<17)&&
                   (joueur_actu.main[i+5].numero+1 == joueur_actu.main[i+6].numero))
                {
                    if((joueur_actu.main[i+7].numero<17)&&
                       (joueur_actu.main[i+6].numero+1 == joueur_actu.main[i+7].numero))
                    {
                        return joueur_actu.main[i+7].numero;
                    }
                    else
                    {
                        return joueur_actu.main[i+6].numero;
                    }
                }
                else
                {
                    return joueur_actu.main[i+5].numero;
                }
            }
            else
            {
                return joueur_actu.main[i+4].numero;
            }
        }
        i++;
    }
    while((joueur_actu.main[i].numero > 16)&&(joueur_actu.main[i+4].numero < 25))
    {
       if((joueur_actu.main[i].numero+1 == joueur_actu.main[i+1].numero)&&
          (joueur_actu.main[i+1].numero+1 == joueur_actu.main[i+2].numero)&&
          (joueur_actu.main[i+2].numero+1 == joueur_actu.main[i+3].numero)&&
          (joueur_actu.main[i+3].numero+1 == joueur_actu.main[i+4].numero))
        {
            if((joueur_actu.main[i+5].numero<25)&&
               (joueur_actu.main[i+4].numero+1 == joueur_actu.main[i+5].numero))
            {
                if((joueur_actu.main[i+6].numero<25)&&
                   (joueur_actu.main[i+5].numero+1 == joueur_actu.main[i+6].numero))
                {
                    if((joueur_actu.main[i+7].numero<25)&&
                       (joueur_actu.main[i+6].numero+1 == joueur_actu.main[i+7].numero))
                    {
                        return joueur_actu.main[i+7].numero;
                    }
                    else
                    {
                        return joueur_actu.main[i+6].numero;
                    }
                }
                else
                {
                    return joueur_actu.main[i+5].numero;
                }
            }
            else
            {
                return joueur_actu.main[i+4].numero;
            }
        }
        i++;
    }
        while((joueur_actu.main[i].numero > 24)&&(joueur_actu.main[i+4].numero < 33))
    {
       if((joueur_actu.main[i].numero+1 == joueur_actu.main[i+1].numero)&&
          (joueur_actu.main[i+1].numero+1 == joueur_actu.main[i+2].numero)&&
          (joueur_actu.main[i+2].numero+1 == joueur_actu.main[i+3].numero)&&
          (joueur_actu.main[i+3].numero+1 == joueur_actu.main[i+4].numero))
        {
            if((joueur_actu.main[i+5].numero<33)&&
               (joueur_actu.main[i+4].numero+1 == joueur_actu.main[i+5].numero))
            {
                if((joueur_actu.main[i+6].numero<33)&&
                   (joueur_actu.main[i+5].numero+1 == joueur_actu.main[i+6].numero))
                {
                    if((joueur_actu.main[i+7].numero<33)&&
                       (joueur_actu.main[i+6].numero+1 == joueur_actu.main[i+7].numero))
                    {
                        return joueur_actu.main[i+7].numero;
                    }
                    else
                    {
                        return joueur_actu.main[i+6].numero;
                    }
                }
                else
                {
                    return joueur_actu.main[i+5].numero;
                }
            }
            else
            {
                return joueur_actu.main[i+4].numero;
            }
        }
        i++;
    }
    return 0;
}

int anEtude_100_Tierce(Joueur joueur_actu)
{
    int tierce;
    int cent;

    tierce = anEtude_Double_Tierce(joueur_actu);
    cent = anEtude_100(joueur_actu);

    if(tierce != 0)
    {
        if(cent != 0)
        {
            if((tierce<cent-4)||(tierce-2>cent))
            {
                return cent;
            }
        }
    }

    return 0;
}

int anEtude_Carre(Joueur joueur_actu)
{
    int i;
    int indice = joueur_actu.main[0].numero;
    int id=1;

    for(i=1;i<8;i++)
    {
        if(joueur_actu.main[i].numero == indice)
        {
            id=id+1;
        }
    }

    if(id == 4)
    {
        return indice;
    }

    indice = joueur_actu.main[1].numero;
    id = 1;

    for(i=2;i<8;i++)
    {
        if(joueur_actu.main[i].numero == indice)
        {
            id=id+1;
        }
    }

    if(id == 4)
    {
        return indice;
    }

    indice = joueur_actu.main[2].numero;
    id = 1;

    for(i=3;i<8;i++)
    {
        if(joueur_actu.main[i].numero == indice)
        {
            id=id+1;
        }
    }

    if(id == 4)
    {
        return indice;
    }

    indice = joueur_actu.main[3].numero;
    id = 1;

    for(i=4;i<8;i++)
    {
        if(joueur_actu.main[i].numero == indice)
        {
            id=id+1;
        }
    }

    if(id == 4)
    {
        return indice;
    }

    indice = joueur_actu.main[4].numero;
    id = 1;

    for(i=5;i<8;i++)
    {
        if(joueur_actu.main[i].numero == indice)
        {
            id=id+1;
        }
    }

    if(id == 4)
    {
        return indice;
    }
    else
    {
        return 0;
    }
}

int anEtude_Carre_Tierce(Joueur joueur_actu)
{
    int carre;
    int tierce;

    carre = anEtude_Carre(joueur_actu);
    tierce = anEtude_Tierce(joueur_actu);

    if((tierce != 0)&&(carre !=0))
    {
        if ((carre < tierce-2)||(carre > tierce))
        {
            return carre;
        }
        else
        {
            return 0;
        }
    }
return 0;
}

int anEtude_Carre_50(Joueur joueur_actu)
{
    int carre;
    int cinquante;

    carre = anEtude_Carre(joueur_actu);
    cinquante = anEtude_50(joueur_actu);


    if((cinquante != 0)&&(carre !=0))
    {
        if ((carre < cinquante-3)||(carre > cinquante))
        {
            return carre;
        }
        else
        {
            return 0;
        }
    }
return 0;
}

int anEtude_Double_Carre(Joueur joueur_actu, int carre)
{
    int i;
    int indice = joueur_actu.main[0].numero;
    int id=1;

    for(i=1;i<8;i++)
    {
        if(joueur_actu.main[i].numero == indice)
        {
            id=id+1;
        }
    }

    if(id == 4)
    {
        if(indice != carre)
        {
            return indice;
        }
    }

    indice = joueur_actu.main[1].numero;
    id = 1;

    for(i=2;i<8;i++)
    {
        if(joueur_actu.main[i].numero == indice)
        {
            id=id+1;
        }
    }

    if(id == 4)
    {
        if(indice != carre)
        {
            return indice;
        }
    }

    indice = joueur_actu.main[2].numero;
    id = 1;

    for(i=3;i<8;i++)
    {
        if(joueur_actu.main[i].numero == indice)
        {
            id=id+1;
        }
    }

    if(id == 4)
    {
        if(indice != carre)
        {
            return indice;
        }
    }

    indice = joueur_actu.main[3].numero;
    id = 1;

    for(i=4;i<8;i++)
    {
        if(joueur_actu.main[i].numero == indice)
        {
            id=id+1;
        }
    }

    if(id == 4)
    {
        if(indice != carre)
        {
            return indice;
        }
    }

    indice = joueur_actu.main[4].numero;
    id = 1;

    for(i=5;i<8;i++)
    {
        if(joueur_actu.main[i].numero == indice)
        {
            id=id+1;
        }
    }

    if(id == 4)
    {
        if(indice != carre)
        {
            return indice;
        }
    }
    else
    {
        return 0;
    }
return 0;
}





